package jp.co.dailyReport;

import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import org.apache.log4j.Logger;
import java.util.Properties;

/**
 * メール情報管理クラス
 */
public class MailManager {

	private static Logger log = Logger.getLogger(MailManager.class);

	/**
	 * 日報メールを送信します。
	 * 
	 * @param mail メールオブジェクト
	 * @throws DataUnavailableException
	 */
	public static void sendDailyReportInfoMail(Mail mail)  throws DataUnavailableException {
		log.debug("sendDailyReportInfoMail start");

		Properties props = new Properties();
		/* サーバーの指定 */
		props.put("mail.smtp.host", mail.getSmtpServer());
		Session session = Session.getDefaultInstance(props, null);
		session.setDebug(true);
		/* メール・セッション */
		try{
			/* メッセージのインスタンス生成 */
			Message msg = new MimeMessage(session);
			/* 送信者設定 */
			msg.setFrom(new InternetAddress(mail.getTransmissionDailyReport()));
			log.debug("transmission = " + mail.getTransmissionDailyReport());
			/* 送信先設定 */
			InternetAddress toAddrs = new InternetAddress(mail.getReceptionDailyReport());
			log.debug("reception = " + mail.getReceptionDailyReport());
			msg.addRecipient(Message.RecipientType.TO, toAddrs);

			/* タイトル設定 */
			msg.setSubject(MimeUtility.encodeText(mail.getSubject(),"iso-2022-jp","B"));
			log.debug("subject = " + mail.getSubject());
			msg.setSentDate(new Date());
			/* メーラー設定 */
			msg.setHeader("X-Mailer", "MyMail");

			/* メッセージ設定 */
			MimeBodyPart mbp = new MimeBodyPart();

			mbp.setContent(mail.getDailyReportInfo(),"text/plain; charset=\"iso-2022-jp\"");
			Multipart mp = new MimeMultipart();
			mp.addBodyPart(mbp);

			/* 送信 */
			msg.setContent(mp);
			Transport.send(msg);
		}catch(Exception e){
			throw new DataUnavailableException(e.toString());
		}
		log.debug("sendDailyReportInfoMail end");
	}

	/**
	 * 週報メールを送信します。
	 * 
	 * @param mail メールオブジェクト
	 * @throws DataUnavailableException
	 */
	public static void sendWeeklyReportInfoMail(Mail mail)  throws DataUnavailableException {
		log.debug("sendWeeklyReportInfoMail start");
		Properties props = new Properties();
		/* サーバーの指定 */
		props.put("mail.smtp.host", mail.getSmtpServer());
		Session session = Session.getDefaultInstance(props, null);
		session.setDebug(true);
		/* メール・セッション */
		try{
			/* メッセージのインスタンス生成 */
			Message msg = new MimeMessage(session);
			/* 送信者設定 */
			msg.setFrom(new InternetAddress(mail.getTransmissionWeeklyReport()));
			log.debug("transmission = " + mail.getTransmissionWeeklyReport());
			/* 送信先設定 */
			InternetAddress toAddrs = new InternetAddress(mail.getReceptionWeeklyReport());
			log.debug("reception = " + mail.getReceptionWeeklyReport());
			msg.addRecipient(Message.RecipientType.TO, toAddrs);

			/* タイトル設定 */
			msg.setSubject(MimeUtility.encodeText(mail.getSubject(),"iso-2022-jp","B"));
			log.debug("subject = " + mail.getSubject());
			msg.setSentDate(new Date());
			/* メーラー設定 */
			msg.setHeader("X-Mailer", "MyMail");

			/* メッセージ設定 */
			MimeBodyPart mbp = new MimeBodyPart();

			mbp.setContent(mail.getWeeklyReportInfo(),"text/plain; charset=\"iso-2022-jp\"");
			Multipart mp = new MimeMultipart();
			mp.addBodyPart(mbp);

			/* 送信 */
			msg.setContent(mp);
			Transport.send(msg);
		}catch(Exception e){
			throw new DataUnavailableException(e.toString());
		}
		log.debug("sendWeeklyReportInfoMail end");
	}
}
